{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Adversarial-Robustness-Toolbox for scikit-learn DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.datasets import load_iris\n",
    "\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "from art.classifiers import SklearnClassifier\n",
    "from art.attacks import ZooAttack\n",
    "from art.utils import load_mnist\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1 Training scikit-learn DecisionTreeClassifier and attacking with ART Zeroth Order Optimization attack"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_adversarial_examples(x_train, y_train):\n",
    "    \n",
    "    # Create and fit DecisionTreeClassifier\n",
    "    model = DecisionTreeClassifier()\n",
    "    model.fit(X=x_train, y=y_train)\n",
    "\n",
    "    # Create ART classifier for scikit-learn DecisionTreeClassifier\n",
    "    art_classifier = SklearnClassifier(model=model)\n",
    "\n",
    "    # Create ART Zeroth Order Optimization attack\n",
    "    zoo = ZooAttack(classifier=art_classifier, confidence=0.0, targeted=False, learning_rate=1e-1, max_iter=20,\n",
    "                    binary_search_steps=10, initial_const=1e-3, abort_early=True, use_resize=False, \n",
    "                    use_importance=False, nb_parallel=1, batch_size=1, variable_h=0.2)\n",
    "\n",
    "    # Generate adversarial samples with ART Zeroth Order Optimization attack\n",
    "    x_train_adv = zoo.generate(x_train)\n",
    "\n",
    "    return x_train_adv, model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.1 Utility functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_data(num_classes):\n",
    "    x_train, y_train = load_iris(return_X_y=True)\n",
    "    x_train = x_train[y_train < num_classes][:, [0, 1]]\n",
    "    y_train = y_train[y_train < num_classes]\n",
    "    x_train[:, 0][y_train == 0] *= 2\n",
    "    x_train[:, 1][y_train == 2] *= 2\n",
    "    x_train[:, 0][y_train == 0] -= 3\n",
    "    x_train[:, 1][y_train == 2] -= 2\n",
    "    \n",
    "    x_train[:, 0] = (x_train[:, 0] - 4) / (9 - 4)\n",
    "    x_train[:, 1] = (x_train[:, 1] - 1) / (6 - 1)\n",
    "    \n",
    "    return x_train, y_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_results(model, x_train, y_train, x_train_adv, num_classes):\n",
    "    \n",
    "    fig, axs = plt.subplots(1, num_classes, figsize=(num_classes * 5, 5))\n",
    "\n",
    "    colors = ['orange', 'blue', 'green']\n",
    "\n",
    "    for i_class in range(num_classes):\n",
    "\n",
    "        # Plot difference vectors\n",
    "        for i in range(y_train[y_train == i_class].shape[0]):\n",
    "            x_1_0 = x_train[y_train == i_class][i, 0]\n",
    "            x_1_1 = x_train[y_train == i_class][i, 1]\n",
    "            x_2_0 = x_train_adv[y_train == i_class][i, 0]\n",
    "            x_2_1 = x_train_adv[y_train == i_class][i, 1]\n",
    "            if x_1_0 != x_2_0 or x_1_1 != x_2_1:\n",
    "                axs[i_class].plot([x_1_0, x_2_0], [x_1_1, x_2_1], c='black', zorder=1)\n",
    "\n",
    "        # Plot benign samples\n",
    "        for i_class_2 in range(num_classes):\n",
    "            axs[i_class].scatter(x_train[y_train == i_class_2][:, 0], x_train[y_train == i_class_2][:, 1], s=20,\n",
    "                                 zorder=2, c=colors[i_class_2])\n",
    "        axs[i_class].set_aspect('equal', adjustable='box')\n",
    "\n",
    "        # Show predicted probability as contour plot\n",
    "        h = .01\n",
    "        x_min, x_max = 0, 1\n",
    "        y_min, y_max = 0, 1\n",
    "\n",
    "        xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n",
    "\n",
    "        Z_proba = model.predict_proba(np.c_[xx.ravel(), yy.ravel()])\n",
    "        Z_proba = Z_proba[:, i_class].reshape(xx.shape)\n",
    "        im = axs[i_class].contourf(xx, yy, Z_proba, levels=[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],\n",
    "                                   vmin=0, vmax=1)\n",
    "        if i_class == num_classes - 1:\n",
    "            cax = fig.add_axes([0.95, 0.2, 0.025, 0.6])\n",
    "            plt.colorbar(im, ax=axs[i_class], cax=cax)\n",
    "\n",
    "        # Plot adversarial samples\n",
    "        for i in range(y_train[y_train == i_class].shape[0]):\n",
    "            x_1_0 = x_train[y_train == i_class][i, 0]\n",
    "            x_1_1 = x_train[y_train == i_class][i, 1]\n",
    "            x_2_0 = x_train_adv[y_train == i_class][i, 0]\n",
    "            x_2_1 = x_train_adv[y_train == i_class][i, 1]\n",
    "            if x_1_0 != x_2_0 or x_1_1 != x_2_1:\n",
    "                axs[i_class].scatter(x_2_0, x_2_1, zorder=2, c='red', marker='X')\n",
    "        axs[i_class].set_xlim((x_min, x_max))\n",
    "        axs[i_class].set_ylim((y_min, y_max))\n",
    "\n",
    "        axs[i_class].set_title('class ' + str(i_class))\n",
    "        axs[i_class].set_xlabel('feature 1')\n",
    "        axs[i_class].set_ylabel('feature 2')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2 Example: Iris dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### legend\n",
    "- colored background: probability of class i\n",
    "- orange circles: class 1\n",
    "- blue circles: class 2\n",
    "- green circles: class 3\n",
    "- red crosses: adversarial samples for class i"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAq4AAAE7CAYAAAAcvANrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXxU1fn48c9zZ8tkDwlLIAgou7ZuiLYuaF0qWsHWFVv31trWjVar/VaLa1utSl1arV+hKlasC6JfpeqPtuJSreCCC8i+hS0QQraZySz3/P6YSTKTTJIJZJJMeN6vFy8zd87cewbDmWfOPc95xBiDUkoppZRSvZ3V0x1QSimllFIqFRq4KqWUUkqpjKCBq1JKKaWUyggauCqllFJKqYyggatSSimllMoIGrgqpZRSSqmMoIGr6nYicomIvNvT/VBKqc7S8UupnqWBq+rzRKSfiLwkIvUiskFELujpPimlVCpE5CoRWSIiDSLyRE/3R6me5uzpDijVDf4EBIGBwCHAayKy1BjzZc92SymlOrQFuBP4NuDt4b4o1eN0xlWljYgMFZF5IrJDRCpF5OE22j0gIptEpEZEPhKRY+OemxibbagRke0icn/seJaIPB07724RWSwiA5OcOwc4C7jFGFNnjHkXeAW4MD3vWinVF/SG8QvAGDPPGDMfqEzLG1Uqw2jgqtJCRBzAq8AGYDgwBHi2jeaLic6E9gOeAZ4XkazYcw8ADxhj8oEDgOdixy8GCoChQDFwJeBPcu7RQMQYszLu2FLgwD16Y0qpPq8XjV9KqRY0cFXpMhEYDNxgjKk3xgRis52tGGOeNsZUGmPCxpj7AA8wJvZ0CBgpIiWxGdMP4o4XAyONMRFjzEfGmJokp88Fqlscqwby9vL9KaX6rt4yfimlWtDAVaXLUGCDMSbcUUMR+YWILBeRahHZTXQmoiT29OVEZ02/it1O+07s+BzgDeBZEdkiIveIiCvJ6euA/BbH8oHaPXhPSql9Q28Zv5RSLWjgqtJlE7CfiLSbABhbD3YjcC5QZIwpJDojKgDGmFXGmGnAAOBu4AURyTHGhIwxtxljxgPfBL4DXJTkEisBp4iMijt2MKCJWUqptvSW8Usp1YIGripdPgS2Ar8XkZxYMsLRSdrlAWFgB9EA8zfEzZCKyA9EpL8xxgZ2xw5HROQEEflabC1aDdFbb5GWJzfG1APzgNtj/TgamEp0xkMppZLpFeNX7BzO2JpZB+CI9UV3BFL7LA1cVVoYYyLAGcBIYCNQDpyXpOkbwD+IzoxuAAJEZzsanQp8KSJ1RBMdzjfGBIBBwAtEB/3lwCLg6Ta681Oi28hUAHOBn+hWWEqptvSy8etmoolbNwE/iP188168PaUymhhjeroPSimllFJKdUhnXJVSSimlVEZIW+AqIrNFpEJEvmjjeRGRB0VktYh8JiKHpasvSinVWTqGKaVU75POGdcniK7vactkYFTszxXAI2nsi1JKddYT6BimlFK9StoCV2PM28CudppMBZ4yUR8AhSJSmq7+KKVUZ+gYppRSvU9PrnEdQmL2ZXnsmFJKZQIdw5RSqpv15F5wkuRY0i0OROQKorfiyMnJOXzs2LHp7JdSqpf56KOPdhpj+vd0P1pIaQzT8UupfVsvHb8yVk8GruVEy+o1KgO2JGtojHkMeAxgwoQJZsmSJenvnVKq1xCRDT3dhyRSGsN0/FJq39ZLx6+M1ZOB6yvAVSLyLHAkUG2M2drRi1Z9uoFTS65Ie+fU3jEjhvDVlV4WfXtmT3dFZbDhZR0OCT2p02NYMLiU9eW6DDZTTHpjOmMf9SPrNvd0V1QGen3nYz3dhT4pbYGriMwFjgdKRKQcmAG4AIwxjwILgNOA1YAPuDRdfVFKqc7SMUwppXqftAWuxphpHTxvgJ+l6/pKKbU3dAxTSqneRytnKaWUUkqpjKCBq1JKKaWUyggauCqllFJKqYyggatSSimllMoIGrgqpZRSSqmMoIGrUkoppZTKCBq4KqWUUkqpjKCBq1JKKaWUyggauCqllFJKqYyggatSSimllMoIGrgqpZRSSqmMoIGrUkoppZTqUiIyW0QqROSLNp4XEXlQRFaLyGciclgq59XAVSmllFJKdbUngFPbeX4yMCr25wrgkVROqoGrUkoppZTqUsaYt4Fd7TSZCjxloj4ACkWktKPzauCqlFJKKaW62xBgU9zj8tixdjnT1h2llFJKKdWrTDreY6p22Xt9ns8/D38JBOIOPWaMeawTp5Akx0xHL9LAVSmllFJqH1G1y+aVBSV7fZ4RQ7cFjDET9uIU5cDQuMdlwJaOXqRLBZRSSimlVHd7BbgotrvAUUC1MWZrRy/SGVellFJKKdWlRGQucDxQIiLlwAzABWCMeRRYAJwGrAZ8wKWpnFcDV6WUUkop1aWMMdM6eN4AP+vseXWpgFJKKaWUyggauCqllFJKqYyggatSSimllMoIGrgqpZRSSqmMoIGrUkoppZTKCBq4KqWUUkqpjKCBq1JKKaWUyggauCqllFJKqYyggatSSimllMoIGrgqpZRSSqmMoIGrUkoppZTKCBq4KqWUUkqpjKCBq1JKKaWUyggauCqllFJKqYyggatSSimllMoIGrgqpZRSSqmMoIGrUkoppZTKCM6e7oBSSimllOoeNXYWC30ju+BM27rgHJ2nM65KKaWUUiojaOCqlFJKKaUyggauSimllFIqI2jgqpRSSimlMkJaA1cROVVEVojIahG5Kcnz+4nIv0XkExH5TEROS2d/lFIqVTp+KaVU75O2wFVEHMCfgMnAeGCaiIxv0exm4DljzKHA+cCf09UfpZRKlY5fSinVO6VzxnUisNoYs9YYEwSeBaa2aGOA/NjPBcCWNPZHKaVSpeOXUkr1Quncx3UIsCnucTlwZIs2twJvisjVQA5wUhr7o5RSqdLxSymleqF0zrhKkmOmxeNpwBPGmDLgNGCOiLTqk4hcISJLRGRJ0ATS0FWllEqQlvGrcpedhq4qpdS+I52BazkwNO5xGa1vpV0OPAdgjHkfyAJKWp7IGPOYMWaCMWaCW7LS1F2llGqSlvGruJ9u5KKUUnsjnaPoYmCUiIwQETfR5IVXWrTZCJwIICLjiA78O9LYJ6WUSoWOX0op1QulLXA1xoSBq4A3gOVEs2+/FJHbRWRKrNkvgB+JyFJgLnCJMabl7TillOpWOn4ppVTvlM7kLIwxC4AFLY79Ju7nZcDR6eyDUkrtCR2/lFKq99EFV0oppZRSKiNo4KqUUkoppTKCBq5KKaWUUiojaOCqlFJKKaW6nIicKiIrRGS1iNyU5Pn9ROTfIvKJiHwmIqd1dE4NXJVSSimlVJcSEQfwJ2AyMB6YJiLjWzS7meiuLYcS3Xbwzx2dVwNXpZRSSinV1SYCq40xa40xQeBZYGqLNgbIj/1cQOtCL62kdTsspZRSSim1TxoCbIp7XA4c2aLNrcCbInI1kAOc1NFJdcZVKaWUUkp1VomILIn7c0WL5yXJa1oWaZkGPGGMKQNOA+aISLuxqc64KqWUUkrtI+oiHt7ZPboLzvTuTmPMhHYalAND4x6X0XopwOXAqQDGmPdFJAsoASraOqnOuCqllFJKqa62GBglIiNExE00+eqVFm02AicCiMg4IAvY0d5JNXBVSimllFJdyhgTBq4C3gCWE9094EsRuV1EpsSa/QL4kYgsBeYClxhjWi4nSKBLBZRSSimlVJczxiwAFrQ49pu4n5cBR3fmnDrjqpRSSimlMoIGrkoppZRSKiNo4KqUUkoppTKCBq5KKaWUUiojaOCqlFJKKaUyggauSimllFIqI2jgqpRSSimlMoIGrkoppZRSKiNo4KqUUkoppTKCBq5KKaWUUiojaOCqlOqQFbRx14awgnZPd0UppTqtINfP6P12UJDr7+muqL3k7OkOKKV6t+wKPyUrq0EEjGHn6AJ8A7w93S2llErJ8Yet5roL3iYcsXA6bGY+cxyLPh7Z091Se0hnXJVSbbKCNiUrq7FssCIGyyb6WGdelVIZoCDXz3UXvE2WO0KuN0SWO8L0C97WmdcMpoGrUqpNzoZIdKY1nkj0uFJK9XID+9URjiSGOpGIxcB+dT3UI7W3NHBVSrUp7HGAMYkHjYkeV0qpXm77rlycjsQ7RA6HzfZduT3UI7W3NHBVSrXJdlvsHF2AbYHtEGyL6GO3Dh1Kqd6vus7LzGeOIxB0UO93EQg6mPnMcVTX6Tr9TKXJWUqpdvkGeCkv9OBsiBD2ODRoVUpllEUfj+TTlUMY2K+O7btyNWjNcBq4KqU6ZLstghqwKqUyVHWdVwPWGF/YzdIdg3u6G3tMP4mUUkoppVRG0MBVKaWUUkplBA1cleqDtNKVUipTaZUr1R5d46pUH6OVrpRSmUqrXKmO6IyrUn2IVrpSSmUqrXKlUqGBq1J9iFa6UkplKq1ypVKhgatSfYhWulJKZSqtcqVSoYGrUn1IY6WrQAjqGtBKV0qpjKFVrlQqNDlLqTSygna3V5zyDfBy0RP1lOYbbptZrEGrUmqPFOT6u73alFa5Uh3RwFWpNMne7qPfihrEIUg3Z/fvDgi7A6JBq1Jqj/Rkdr9WuVLt0U81pdLACtr0W1GDE3Bodr9SKoNodr/qzTRwVSoNnA0RxKHZ/UqpzKPZ/ao3S2vgKiKnisgKEVktIje10eZcEVkmIl+KyDPp7I9S3SXscSCa3Z/RdPxS+yrN7le9WdoCVxFxAH8CJgPjgWkiMr5Fm1HAr4CjjTEHAtelqz9KdafG7P4IUO2DoL1vZPf3lVKzOn6pfdm+nN2v5WZ7v3QmZ00EVhtj1gKIyLPAVGBZXJsfAX8yxlQBGGMq0tgfpbqVb4CXQKGHX/2skrUV8Mz8LKTjl2WsPlZqVscvtU/bF7P7tdxsZkjn9M8QYFPc4/LYsXijgdEi8p6IfCAip6axP0p1O9ttMfaYHD74OMKyL8M93Z206YOlZnX8Uvu86jovKzf23yeCVk1IyxzpDFyTTS61WPSHExgFHA9MAx4XkcJWJxK5QkSWiMiSoAl0eUeVSqczpmThdsOLL/TdAbAPlppNy/hVuStjA3ml+jRNSEuPdOQKpDNwLQeGxj0uA7YkafOyMSZkjFkHrCD6QZDAGPOYMWaCMWaCW7LS1mGl0qGwyOLEkz28Mj9AKNQy9ukb+mCp2bSMX8X9+vYaZ6UylSakdb105QqkcxRdDIwSkREi4gbOB15p0WY+cAKAiJQQvfW2No19UqpHnHW2l8pKm7f+3bBX53HWh8nZ5sdZ37uWHTQmo9kW2A7pC6VmdfxSqouVDazipIkrKRtY1dNdaWVfTkhLo6ZcAWNMEGjMFYjX6VyBtCVnGWPCInIV8AbgAGYbY74UkduBJcaYV2LPnSIiy4AIcIMxpjJdfVKqpxw3yUNxicWLz/s5+ZQ9u2tQtKqa/K3Nyw1qSr1UjSroqi7uNd8AL+WFnm4vcZsOOn4p1bV+ctZ7TDmuObfx5UXjeXTe0T3Yo9b2xYS0NEuWK3BkizajAUTkPaJj7a3GmNfbO2mbgauIDAX+ELvwP4A/GGNCsefmG2PO7KjHxpgFwIIWx34T97MBfh77o1Sf5XIJZ56ZxVNP+qiqsikq6lxQ56wPk7/Vn7DwMn+rn9rBOYRzek/lZtttEewlAevejmE6finVNcoGVjHluGUJy+CnTlrGq++Np3x7Uc91LAktN9spJSKyJO7xY8aYx+IedzZXoAx4R0QOMsbsbuui7X3izQZeBD4ALgcWicgZsRmFYe28TimVxFnnepn1uI9XXvZz8SU5nXqtpzbU5vHeFLj2MjqGKdULjB22o83jvS1w3RdEQhZV2/K64lQ7jTET2nk+1VyBD2KTCutEpDFXYHFbJ21vaqS/MeZRY8ynxpirgT8Db4vIAbSOmJVSHRg3zsX4A53Me77zuws05Lk6dVwBOoYp1St8taF/p46rPiMtuQLtBa4ukeYUfmPM08C1RNd1lXa6+0r1Ee7dQQrW1+LeHez0a88628tnn4VZuSL5DGpbwjlOakq9GBNN3jdE17h212xrhlbE0jFMpYXTRLij5h/cUfMPskyo6WenyYzt38aO2MYPJi9h7Iht3XK98u1FvLxofPP4ZaJrXLtztlUrYnU/Y0wYaMwVWA4815grICJTYs3eACpjuQL/JoVcgfY+9R4nuoh2UVwnForIOcA9e/5WlMpcA5ZW4q2OBp2FG+vxF7ioOLg45ddPOTOL391Vy4svBPjVrzs3W1o1qoBvXeFnwgi45aGSbgtaM7gilo5hKi1m1L7J10JbAXi66pmmgHVG7Zvckj+5J7vWoTuuXMCEcZsB+P6pn7Bk2RBu+ctpab/uo/OO5tX3xjN22A6+2tC/W4NWrYjVc9KRK9DmjKsxZqYxZlGS458YY05O9QJK9RXu3UG81SEEmv54q0OdmnktKXFw/Ake5s/zEw53/m71qu3C3A+kW2daM7Uilo5hKt2yiJBrgmSROTOtE8ZtRoSmPxPGb+7WmdeFH47u9plWrYjVt/SO9F+lMoB3d/I9WNs63pazzvFSUWHz3judX2rQ3fpgRSyl9tpdeScRlsTiGmFxcGfeST3Uo9RMGFveqeN9gVbE6ns0cFUqRf5CT6eOt+WEb3koLBRe2IMkre7WBytiKbXXfl27sNV6VqeJcHPtwh7qUWqWfFXWqeN9gVbE6ns0cFUqRcFCN/4CV0KClL/ARbDQ3anzeDzCGVO9vPlmgJrq6ICaavJTca7hsGGm227VN1bECoSgroG+UBFLqS7jA6oRAmTGF7mv1g1iybIhCUlSS5YN4at1g/bqvKkmPvVEgpRWxOp7OlwoJyIDgd8Cg40xk2N1Zr9hjJmV9t4p1cvUlWbDjmoswO2OPd4DZ5/jZc6TPl59NcAPT5aUkp+yK/x8+VsIhSHvw4puS5LyDfBy0RP1lOYbbptZnHFBq45hqqvdlncKM2rfpDpUwaWOIuZZrqbjvd0/F4/m66O2NI03CxeP3qvzpZr41JMJUloRq29J5RPoCaLbFQyOPV4JXJeuDinVWzUmKmW7Icsd/cezp4lKX/u6k1GjnfzrNV9KyU/x1y7IptuTpHYHhOUVVsYFrTFPoGOY6kJhcXBL/mTOdRZTLxa35E/mlvzJrda99jaNiUoet8HjsvG4zV4lKqWa+NQbEqSq67ys3Nhfg9Y+IJVPoRJjzHOADU37cmlmhtrndGWikojwvbOzqN4cxm65uUCSc2qS1F7RMUwpuj5RKdXzaYKU6kqpBK71IlJMrNKMiBwFVKe1V0r1Ql2dqPTd73rZWAl2uMUTSc6pSVJ7Rccwpej6RKVUz6cJUqorpRK4/pxoia4DROQ94Cng6rT2SvWYzlaEabN9q2is56ovpXrdjto1Jir5GqDat/eJSgMHORh3qJtrn6XD5KeuvvY+Rscwtdd6qvJSZ67bUduuTlRK9XyaIKW6UrvJWSJiAVnAJGAM0T3XVxhjOlevUmWMzlaEaav9ravncjZXNLXrqepLqV431Xa+AV4OvLaa4f3hxf83YK8Dx7PO9nLNVUE+2+5g9BDaTX7yDfDy9Z9XM7wEnntj76+9L9AxTHWFnkos6sx1U23b1YlKqZ5PE6RUV2k3cDXG2CJynzHmG8CX3dQn1QtkEYFYEOoDqkMVfFj9aqt21eFKbCJkQ0L7ypq1bLp6Bl93NlCca/jyt2C5IXa3lvzPq7noiXp2B6TVObtKYZZh/iVhogm/0euWrKymvNCTEPTFV4dqr12jnbXRP10ROJ58ShZ5+TWs3GATcTk7PGdXXntfoGOY2lsF3vqmxKLGpdHTL3ibT1cOSeuCk/iEppbXbRn0daYtRGdAuzJwTPV8XX1dtW9K5dPvTRE5S6RlZojqi5JVhAkhXOJIXqLvUkcR0SKozYLAeeJqejysOLqFU7ywDaX5nS952hml+YZwy7v+vSzxKcsrnP6dLHbtMkQ0XShddAxTe2xg/u4eSSzqTEKTJj+pfUkqBc9/DuQAYREJEL3VZowx+WntmeoRySrCeLB4yXIlXSpwR80/8EQs4pO0s3CwMG8oZ99/BYu+PRMraJP3YUUspzsq29v+bfGuYAVtsltctzcmPp19jpdnn/Gza1f3rv3dh+gYpvbY9prCHkks6kxCkyY/qX1Jh1GDMSbPGGMZY9zGmPzYYx3w+7gADurEnXJFmPbaNyYW2RbYDtn7xKKgYcCFuxhw4S6k3m76mWBi8JnqdeOrQwVC0Ti3vf6NKYWLjgVnfesEtJZSSQw77HAXnizYUdF1gWthlmHcALvbE+F6Ix3D1N6o9ud0aWJRqgmw9bVuNl9fQOR3UF/lJPI72Hx9AfW1rSv1NSc/CYEGi0BQ2u1j2cAqTpq4krKBVe32NRMS0tS+J5XKWcclO26Mebvru6N6WmNFGIguG/h1rPZ2WxVh2mp/68hpCe18A7yUF3pwNkQIexx7NdM64PIqsj4IAlB2xA4kZJqOV8zpt0fX9VQH8TgTHydLzipaVc3yP8QefLSTmlIvVaMKkp4z1YQvEaF/iUV5uc2mjWGG7pfKjZC2ZVf4mX9JmLAN2d1YYau30jFM7a2uTCxKNQF2Ru2bDAlVE650INdA2HYwhGpmuJInyo4fsR2Py9C4Tn/c8O1Jk7N+ctZ7TDluWdPjlxeN59F5R7dqlwkJaWrflMon5A1xP2cBE4GPgG+lpUeqRzVWhGmUbIBMpb2xWv9q2W6LYBctDTAGHA1AIDpI21ltt+3ous76MPlb/QnLXPO3+qkdnEM4x9npdtD5hK+S/g7Ky21emhfgmuv2/PZe03Ublxjb7V93H6FjmNprXZ1YFJ8A296dLQ+RpuVObbUrG1jFlOOWJYxNUyct49X3xlO+vajT7Tqb7NVVeuq6KrOkslTgjLg/JwMHAdvT3zWlWlu/LswVhUJtQ4snXMKOvxTu0Tk9tcl3Rmp5PNV20PmEL48H8vOFF5/3Y1qut+0ErbDVmo5hqreImDA/dpYSaFG4LSwO7sw7KeFYskTZZO0Axg7bkfR6LY+n2q6nkr00yUylYk/uSZYTHfiV6jbr14V5+ME65r8U4DUbvA4Si3aGDP1/vLvVUoFUNOS5UjqeajvYs4Svkv4Wa9dEWPxhiIlHtl7HloqeTjTLEDqGqW4VMWE2BZazzr+U+cZPy3/dThPh5tqFCXevkiXKJmsH8NWG/kmv2/J4qu16KtlLk8y6h4QEz7bkn2eZIJU1rg/ReK8zOkN7CLA0nZ1SmcWOeLmt7h9YBPld/gnRda4rPUwLX5bQzgranV7jGh+wulxwyWXZHPlFCNcnIWwX0d/gjnOk2hXOcVJT6iV/SywRQKCm1Nvq9n+q7aA54Sv/82psA1mejhPS+vWz2LbV5sUX/G0GrmNKYeL+0WUL7V0397NqQhHIy9EKWzqGqfZUVhZTvqmMsqHlFBdXNj8RNDw5cxY5myLc5TyWW31v4HZFuLPoRHbVtw6knCbSar2/MYbLXUNYGficoPHTzzWYQjsXK7KLBgHjAInQ/NvZgo2ND7Bx4aTtRMvy7UW8vGg8Uyclrl2Nv/3fmXaNyV7TL1iEsQWxTJdUuiobWMXYYTv4akP/VtdMvO7bRCIWjtgaV10moOKlMuO6JO7nMDDXGPNemvqjMswO/6G87ruFflTRgJsXdj2FYBMKOXj8oSfh9Gi7zlbOShaw/vjKHPoPcLA7aMg5fwfOBhuuBR6AsMeiYlbyvWa7UkOBm8AGP8ZAVlb0cbuE6IdSCjuIOhww+TQPC14NcOvt+Xi9iS8qWlXNF7+PPWgnMcw3wMuR/1PNsGJ46mWtsIWOYaoNr8w/kxtvuB+XK0Qo5OLue6czZerLQDTZc8DKXVhhw7OO9XgkAhGYkz+Xe8ac0CphKDHp6m84TBiD4Z7wZn7gGsxI74kUuUq52w7yd98c3C4bfg/cBMGQxV3ZJyac75fZR/LL6hfxSi5/LDq7w0TZVHcp/mr9QCYfvaJpXFq+fmDy8wGCYERSGb46lGpSmFbYUh1J5ROt0BjzZOzP34wx74nItWnvmer1gnYud/nmU0QVFjbZBHBi4wBcRDhw+Wq2HrSdq76/g/zPo4lKVsRgxRKGkm3VtH5dmOun7+akE3by2qsBLrksm7ff68/Nv8mn/4Do7W5nKILzOhu5ESQL5EZwXmfjDO3ZOs74pCuR6ICdv9XfarurxsQnrxuyPWCZtt9HY9ssJ2S7afc9xzv7XC91dYY3Xw/sUR8bVdYJH28QDVqjdAxTrVRWFnPjDfcTCHiprc0nEPAy/Zr7OetM4fxzKln6SQjCYbJMmKxwBAlF/+05rGjCUFtbNWURIdeE8MamUQsd/Tki/3SKXKUA3BF8HbexkSDIL0GC4DY2dwRfTzjPysBnfAcHtxVOJSDRfbRvyZ/cat0rJCZdNf6ZOmlZq+2uGpOfPK4IHncEjyuS9L00tXNH8HrCeNzJ26Uq1f41qq7zsnJjfw1aVVKpzLheDDzQ4tglSY51i1C/LLadN64nLr3PGzR3ecJjv10MGIJ4yCZxQLOAXNvm0Br47fJImxWsGrP925thbam9JKlkt887kur5mhOf4u7rtXgfe9I23sQj3Qwps3jheT9Tv9s8aHf1e97H9KoxTPUO5ZvKcLlCBALN/85EQjQ0DMPl2sn/jHbw0kc22fFrxp3Atc0JQ5F6LxG3sOWMA7jgs4NZ/H458Ruc2OLm9wWnJ1w31xuEENESg8HYQXfseOxS9ZFqtjasZr+sA/FY2R2+l/aSruJvyTcnPzV/yW98L/FBYqrtUpVq/5RKRZufeCIyDbgAGCEir8Q9lQdUJn9V+mUX+zn4wi966vL7tKUclBC8eq1KzuVZKml9q0kAL2B7YNQ4Nx5vMGkFq2eWD+Heu0NU/ftz3G5pN2Bt1JkkqVSker7OJD7taZKUZQnfO8vLww/Ws3VrhNJSR6f6qJr1xjFstb8/Zy69vCcuvU+7atRbnJS9OuFY2dByQqHEfz8ul5snn66luLiY9afmk2XWkjBwhYEHwDHdZu2Ygwk3LMGqrmbV87cxb5cfd2wpVKOWyVTG2Py6YCx/q38/sYMO+EPJJHnc4QgAACAASURBVIjFd2v9nyBYjPAenNL76+qkq65Okkq1f0qlor2pmv8AW4ES4L6447XAZ+nsVHsGu6q5bfCCnrr8Pm3SIWMY+MEQZN1mANxWHQus47Dstm9/B4GtjxaS629IWOO6vDCXH10P78/fhMj+DBz2HbLPPZyjLltI/xYfMC11JkkqFameLz7xybYhO7vtxKe9SZL63lleHnqgnvnz/PzkZ7lpec/7iF43hlk7HeTOTl6wQjVz2mF+/58nALjlqAu544M5ANz0zUsIJ9kjuiP3HPY9OGdeQvBaXFzJ3fdO58brZ+J0hQjH1rgWF1cy6Y3pvLDpMTAmuneqk+gaVwO2Dfe+8R3esz8iuDJAODyGiUdu4ZCGEK6vbHyB6ISqJ24lXl24is0NK9nasJqXdvkIOyA+ZI4EhUvXLOGW/Mmdnm2Fzidd/fyCt7GNYEnypKuuTpJKtX9KpaLNEcAYswHYAHyj+7qjMo3HUU3ItgCDFbvPFb+Q3w7A2q9X8OEdeUw7uz+71gf5018DPPX3OiJMAWZh2TY71jkZ+a83ePjYMCcd3H7gClA1qoBvXeFnwgi45aGSvQ7gOpV0ZWJ39DrYbnVPk6SGj3Ay4QgXL77g58qf5iCxrIuqUQUc+X0/R46Eu/53799zX9cbxzBHbYDcRSt7uhu93h01/2hKdHrp/25v2hbqD6/9qcOiKMmN5uFDjm81tkyZ+jJHH/Nuwq4CM7acRtGnLm5zTmKGK7ph9F15J3Gr7w1crjBXbi/jw68WEgyfAWzAsoJ8ttTDi7+/hqkvvsDyxQ1cHsrnBXHQYPv4XsRPZfULCEKJayj5dj2RyG7suF0FTISmjJPOzrY26kzSlcFgDBhpexDr6iSpR+cdzavvjW93VwGlUtHhJ6mIHCUii0WkTkSCIhIRkZru6Jzq/W7LO4XPXYP42DWEj52DsREiAnYuhN3RCdZQGH79q1rGjN/BEadUM3deA+dN2w9x/BVMFhGysXGz+uNTCVenNsMAsGq7MPcD2esALtWkq8Z22R7Iy2o/OavRniZJnXWOlzWrI3z6aeLa1hVb4al30KC1E3QMy1zRRKdgtMpUmhQXV3LwIUsTt8KiuSrgLfmTqUc43xrGYXV1vLvjE7I9Y8H5JJCNbRcSCHi54aYHefaub3JGfgHb7Wq+Ed7GJHs3QTGMyT6KSUUXcFj+t/ldwVQ+d5XymbOU8/Mv5DNnKV84ByHGcGv1/1HTsIp/ipd76ha12se1LZ1Nuspy22RnRchy2+0mXXV1klT59iIWfjhag1a1V1L59HsYOB94HpgAXARo4WAFJJZ8dZoIv8r9D3mDayl4IkT/K3fj9xkezAcWhgjFYjCXS8jOHoE4bUyw+VwiNsEeGNBSTaTa04SrPXHa6VnceksN8573c+ihe1aMQDXRMSzD3JV3Ek9XPdNUEhXarhqVTvGFAxr3YR3pPREZMoUP19uYuE09IpEgt35nF8GabYhY7DdwIoOLDyEve1BTG0N0GcHN/LDp2M38kDtXzuFrtRuwTYRNgMcKgNnOzc73uDVyXEKfmvaL9Xq484BzuXnNc+T4GgiHHOCOS6YyTgYc5GX39iFNxwYM3EzYOElIukrSTqneLKVpG2PMahFxGGMiwF9F5D9p7pfKQGFx8LMpV3DwhV9wacUr/KLEatol4PIfZXP66R7uv6+e994N8vhjX0KLDbWNsfBJiIW+1GKKcCyTIb79O7tHs3THYAAO7r+l3fXQja/LskOcby9uWuoAYNvCv+yRBHzNK9FSbddRH5Opsn2J7Zxw8MmGea9U8c1f7o+rKTDeltL5Ur1uqlr1r5v8sOMmKdExLLN0pmpUOtihIOv9n7cKWBu3tGpw74Zw4pfVUMjF2GN2sXzFQLwN2ZQdfRYA9SlcL7LRiamH7IghGyASpsHjIFIWom746ITlJTNq3+Rr9naMD57+ciZOO4L4DK6HInBT8zktp80Xo4ZSNaI5oSrotHA4W9xJStJOqd4slcDVJyJu4FMRuYdoskNOerulelqyKleRWi/V9UVk29VkS3WrKjEAl1cW8d7tb/O313e22tbKCtr8/S95bNltuPGWGv71z8uA2UAIwcP4oa/SUB/msxUHkLvRTd1+QaoHtp2FHzb/BaLBaqO3Ph/D0AXR/i4d3I8ZF5I0eF3oG8nDq45vevx51mB+uukd1u8Yzv5Dynl44Dd4Y/2BrV73edZgZux+iVAE3NlObs06I2m7Rg2RxQAJ10pms29jq3a1E4fie3Uud/+tlMJjGreAezel86V63VQl6193+OHojtukQMewDOWjcXTo/B2Nglx/0/rMxkr3bVbJivH7DcvmfsHyOc8T9tXSzzWYsVkn8MfAZ7iCH/HUsEM4b8UH1H3ZwHvhxYR4AssKYTlc3H7ndKZdUMMZ55Qw0jWYwCA/W63UgsHpZ17C67N/TfwNeZfbpmxuHZvesRm7sTkpFq8H4wNvOER0/hb8ThcrQ4PI3W1Yt3MEI0rWcV/wJDaXJF7fRy6/qjyP35X8nTAOnET4VeV5rdop1ZulErheSHQt7FXAdGAocFY6O6V6VrIqV8/+Zxpbfnkl2yIRjG2xyDqMr9mNVWKewWki2NjcPfcezvA4Wm1rFX/OQcYw954CTvhqMFt+fiq7twcwrGP5xhouWfwjHr/9z7gdQYIRN5ddeSfvnpI8eI3YsQA1NsNatS2PoQusptmJnBFDeOuQMZAkcH1n92iqtuU11Wv+7KsTGffc07gcQUIRN5PO/Su+scFWr3uJY5l990sM7w/WD39Dld3BgB+JJlb5Pu3XbjO7ztWqnUUhzvwF7HhpOe7cxAozHZ0v1eumKln/usXpHTdJgY5hGea2vFOYUfsm1aEKLnUUMc9yNR1PxfGHrea6C94mHLFwOmx+94nNE29N5ZiH/ydplSy/3/DM0z4efaSenTu2k1s2ivHOSRS5Srmj+h8cbG/GheG+1VvBQNCG10oWsvsvh+F2D28KhP/56Cms+fgRNjmCBP/r5rKz7+bdfoUd9vfu/3sMV8vNrkOG/j/eDT9IPHznAefy9JczaQxaAUJOB7865HrenH4lLkeIUMTFpHP/CknGsAX1h/G+fzRlzl2Uh/t1PIYp1ct0+DU2lpkrQKkx5jZjzM+NMR2nfauM1JiAFF/lyixxceMN92FCLiJ2FjZu6uwhgLRInjBYlpN+o/vxxechrv7Zbs4/p5IrL9yZtHLWgDw48OgpnFA0jkHufIaX5PPMP+7BH8ym2l+IP5jN7EdvprRyz6q1pCrXZ7PouUvxB7OpiV130XOXkutLnnS1sxaWrCXtA75YFnkHH45v1VeE62rTeq2+TMewzNO4dv5cZzH1YrVbNaql5gSkCLneEFnuCD8c9W/KHzwzoUrWjdfPZPPmfsz633qOO3oHd95ey5gxTr796GkccOZP8Fr5rPV/Sj1bcTlMtHKWHyQEbgdkD+zHEROrmxK7qjcVcPUfHkkcv164kVK7rsM+B6ujs79+gVoH2Fltt715zXM47cRlFK5whJ/+/fXYGFbQ4RhWZefyeXA/DVpVRkplV4EzgE+B12OPD2mxmbfqQ5oTkJqt3zkClzMxu/085tDQ4rUhhAsHDMVyJX64lOabpJWzBtvVALgtDwfnnciph/0AtyNxhsDlCDF4W/tlUvdWQa3gciS+P5cjREFt4t+DKxzm8ScfYwHR+8yPP/kYjz/5GK5w8rKrXSH/0CPAtqld+lHartHX6Ri2b2mu+tRs7Y4ROJyJ/06NCXL6qblNAevfX+jH/84uor6injUv/4VFu+eyyreYe4blt7436YSZP0tMFNu+sjT5+BVKLN/cUsPuHZzmq+X9AQUszncw5TAngaPcBI5yUzGr7WRVH8JusfA7XQjR5NaW1245hinVF6SyVOBWYCLwFoAx5lMRGZ62Hqkelazi0/CSdYTCiclHz/IDXCR+EHiweMnt4bFHTkhYV2oFbbI/rGhVOWuLlbgR+y6/h2AkMYM+FHGxZVDXZuy3VJ8d4vnAOURwcA7P8zzn4AhEuDn7RKC5P48+PYtvro4uQygH8lataDp++SU/Tkvf3AMG4inbj5qPF1P4zUlpucY+4FZ0DNtnJKv6tH//dUTCiR93DQ0uDj6knJ9fX4RlCS887+fyS6qoq9uOK6+I/b2HMNgzit9ufodWu3GFYfqfFsIZzYcGjt6afPxytTN9CmxfspCww8E1911K+KHZFFl+Kua0vSTn1pHT+J+dL1BfsYHvDxjEix4Pjojh7E0vJIyxoYiL6rzYpq5K9SGpBK5hY0y1iP7y7wsaKz7Fr3GVCSGu/+W13HnnQ2A3AC7crMLCQYDobb329htMOGfMztEFVG3NIf5GVWW9l4u/fzdP/u3GpnVa115zM1vGVjOAqlbnrciPMKzYcHi/NdQ6vLy1bQy+miKqA0dR4FzXlH3jrA/jqQ3RkOdq2v80UJVLw7pBOGwf9857jInWGuyIk80MwUUIywpz77xN/PDiK5qud+CWTVgYBIiuWjOY2PF0cYXDvNbQQHDHdqZvXEfj14Hrw2FCTt3LNUU6hu1DklV9euyrY8k/+l52//s6IIRlubjw4qvo16+GG6/3s2FDhOxsYfJpHmpPOIFty06k9NnoF9NQxBFdK+uyo5+YYQjbDkIk3lkqGFrNQzdcydV/eLRp/Lrs7Lt51yrEGQnzwGuzAbj+1Iu59/UncUqYP04+is1bllB80HG4inKp941ih+/rrF61ipGjoqtZDmA7J41bywqfk/LtRYQtJ5decQUbZj+DCQ/hgp+eiCPPz5GL5/DuXy9vuvYxl85ixf4RWkfdSmW2VD75vhCRCwCHiIwCriFaSlH1Ub4BXsoLPTgbIqzbbpj5Ox/zX3ocHK8xqHAy+0fczHR8i/wkuwpce/plHMhXyU/c+OW/jWIt9fvlsOBom4cuPIPQ2kJc++/GDAlyQJK2+1dW8MjvwoTCkLP+77w9fCSvvfRDNi48qqnN0A3/5TbXzxny0c6mYzWlXp788mJevP4eDGBsi3C//8UIZOMHoutp/dJ6e6vlpWV8c03rqkfLSsuSv6Eu8MjfZnNEVSUG+O/sR5rKRD7yt9kJQbVql45hXaRpD1ES/93flndKSutPu0tj1aeSot18vGUrH1UvINTwHIdPeJjhw0eyfv0anvzrFgC+8U03V1+Xy6mTPeTkWMzYUsr25c13eW7LO4UHZT7DSnfh/wl4H4GNlSX88OqLWchDCdc1F62jbM5IRvcfhvuAb/NpII/cLRHufXcWh1SuBeDN2beRRQinFeGpd1YT+iP8ZmUJTzxyGpVf3A7Ayd+Ciy6ZxYMXXcM/s+6HbwPfjpZJvbfyUnZtOIDgurcRCbHtJg/fvPkJSi/7kGlTpmNtysEeWk+4JExp9/x1K9WtUglcrwZ+DTQAzwBvAHems1Oq563dbPPwg/VN+7Beclk2r4+9nAPnOpF1mwnjSNhPsfHnsKP1r1RTwpehKWgtWVlNUU49IRKXCxQNquXEUctgVNt9s4I2ZRsqsNxE7+Qbm4H/ESpfO4r422KbdhzJkdt2IXFxZcOKHG64fiaRBk/TsTN3LGSzNZj4LN0wDm4fdyEDPm6erXBVJ4+43TUmoV28tbHDbT3faHudSdrOXW0QI9FtciLR53yx4+2dM9Xrpqqt/mUIHcO6yIzaN5tKsTbuJtJ4vDv2V01VxIRZumM16zZG92HNKRiMZ/wAln25jo+WbGX4cAc/vz6X757lpays/YA7P9fPsPxdOCzIzQIsGF68naI2dmhdvaOKtVuqOFFOJSfWxhEIg23IMmGyGscZAZeA649wi/8fPLjqb8SPX089cTk3jr+XgiErmo5NnbSMv/zHz+5Z3wbjwRgvkQZYfNdFzDzjIYq/Xglf36u/OqW6lIicCjwAOIDHjTG/b6Pd2USLxBxhjFnS3jnbDFxFZI4x5kLgR8aYXxMd+FUft35dmIcfrEsIWBu3tfp/b+TROCPZGW1VnBpsV7OBwU2HKg5zkErB12Tn+3DNkUnbfrjmSMaXNQ/863cMx+NsINjQvO7sOfs8nC2KIbhMhDs/eIrrj2neAn90zeak1xhdnfx4V7jlqAuZt+DO5g87IAjcfNRFabtmX9Ebx7BIXhZ1k7pmc9qeEHn3bai0yIqEmqpaBRwuIkU51B2Thvf1ZnTNqBmRWNWpfr/k2/BGwkG2rfuALV8sJGj8ZFm5uPFSX70Fa4WHc7+bxVlnezl8gou2lo7cNngBZ546mLot0ffzh/8+jLWCaEx5NRCOZjW/+tRD+E9v3Q+xQWzTvO8qcJfzWJ6mxZIiA6wBIpAdaeBlpnJaNH+wyYdrjmR8XOAKMDgUwHJGiMRlxzpdIco3lSXdm1apniIiDuBPwMlEU0MWi8grxphlLdrlEb0T9t9UztvejOvhIjIMuExEnqLFCm9jzK4UOt3lkfaWUAEztpzW0aVVzLGFrW9tQ+Km/QA1m2r4/K+fsvb1NXhcptU+rKkaNHc57w86iBknNx/Li/i5z34OT9xaq5BtseWt4U17rm6bNo7sQzr8lQKSJ5BNPCD573vL48P7rycUSVwGYETAaeMLRoNCj9sJmGjVmsua1+UuWzeQIz9djzGGeiA39sG37MCBCe0Szv16tJ9tPd8osjKctN3dv3kGp5WYBOcGbiufxc9uv6DN86V63VS11b9ebq/GsHSMX3ZJJNP+DhNMnzaVNy9+gCxf87GQx+K6P08lkNW176tqWx6Bj6MfUevOzE94rmFQiKJBzVvE2YEQla9/zPbn3iNS48NyZ0EQAnY9Ja4h9DtkEp6byvjdxCdTuvb8gx/nzMuiX1p964EdRAeHxk0D3JDvbMDfoo7Fw6uOB7MEY0nCF5Rb330cp2VaLzeNzQO0rGbVKNm4Fli0jXAwcQzzBz084xrDvC1atrU3eTJ9q8gyxURgtTFmLYCIPAtMBZa1aHcHcA9wfSonbS9wfZTo9jH7Ax+ROOib2PE2pSvS9lV6WTrnoFSa7lPCfi/Bmnzc+TU4vX58g6KD+1uMSWiXvdWDZ10/Inm1OCINNOzewdYPllC9uhoc9fT/2nEc/9tSfjPmX9HKWXVQ8pPoB5LnVItblz+P1VDHHfkntrmmbf+Zy/lo3RFN/cly17L+zbcY6d1K3ZWQ+xdhvW8AOVXrCYuDbdPGUXVIiMaNX1L5YnJk/zWc/uWXbNw5nP0Hb2TRIYPIOeEj6v99eFObof3/y38HFTOuMcYV8Iyp5+57f86N18/E6QoRDrlY8/v9mDTf4v134Lah8MZ+FsaCIbPqme9+vPmiLxgaLnex6K0g5wAVk6IfHoNn+RLbxfl6bHuc+Qcnf77R+bnRmZJnW7QbkL8LjxWO7uvoEgK10TdzaH55u+dM9bqpaqt/6XfH3rx4j8ewdI1fI707uuz/SU8YcOEusuzELZ9y7Ab+9fAf282E70iyilYLR43k5n711AXdCV9qx9f4KFmVzZlD/0XpiDU8/VQ9Dz7gpa52GJCNCx//Z0XIze/H3/c7lMtWLyOwYQlXWft1WDkrvj+3mcWUDS2n5Bk/ZgJI3Ns2bqj438TCAmcvuZQ/XfsCtaEGznW6uXvJLCC67j+SJRiJVrgKi0VuqCHxlzECV50yHd5s/kJ+0SWzGDJhI2YLEAbuh4pdOdT7bN6OHEotQ/iu6wWCJoshkxay4tXhFDnrGOzZxZaGflSFdY/WHjexpzuQdiUiEv9l/TFjzGNxj4dAwq2GciDh9qiIHAoMNca8KiJ7F7gaYx4EHhSRR4wxP0nlZC2kJdJ27QowaO7yPehO37U1cATL6y/GIoyNk4NynmTEuC1sPypxlsLx3wP5eHHzVOiBZU/wVfmHwHyECBJxU7rqKYaseJvBu3diWQb5nYGvolm0H751J+7YlMNNu//LnUXfbLs/s5r7s8g6jGF2BUHAcY0Qti2GUcEMV/J1cY2VsNqT9+Ygrn90QUKFrayRW/C9dTBibAxCYW45H9nDOM/+DxjI8kBDgZspU1/m6GPeTfgAqzvWyzeWBnklAp7cIDtHF4C7xa1Et1Axpx+nDd0GsFcf1KmqmFXEgMujOyrseLSQZWMrABjXzv6OKmovx7C0jF99RUAgZEFO6xzGTntl/pnceMP9SStateR4+Ejmvh4tp/YQtzO69EFWbv0AmAUEcTjcfDZ0DPtv2YIrsItvrvknRCC0q4J7py/gmG2LO7xOy/4sHzEGWm7VHIb+P97dNAbM2HIa9978IodtWYcxho2hBjxb1gDwwGuzufb0y5p2FRi3bX2ra1rG8OHb5zDIvQOHRDBGOHzCEhoK3AS2BHHfG8FaAf0ifp42jWuLV/Bvczi/zvsO7o/qON4kVgub+cxxLPp45J78L1Fd5aGOm/QEKwTZ27rkVDuNMRPaeT7Zepymb2ciYgEzgUs6c9EOk7P2MGiFNEXaKlHQzuWL+ouxcWPH9hz9ov5i+oUeSGjnrvawePHJxP8efVl+CcI0DFk05k196buI/3PPwGlsYsWwsG1whSIUEp159eGlzh5C0M7FbSVWhUnWn2iVrRXRBCPbABEC7HkGcmmln9mP3o4/mI0/tip21iM3E8SJMa6mfxXLNkzhVf81ZMflf5WsrKa80ENxcWXTjEtT8piH6Nns5na2O717yHYoFiw3apyLXtcyqFZt2sMxTMevJBq/SC39JMT/jHbwWo7VdHxPVFYWc+MN9xMIeAkEvABMv+Z+nvzrK9Q5PmPXSj8R22L1TU+Rz3C2fnE78WPYyq3XAFcAXiCbSATWrx/HaFc5EldTxOmKENgwkIBpfR2Xq3nXkVCohE8/uQ/bbm63fPlYBsR+FYLEdnYOwHvvBDlr/HYAAmYO5/vCGNuQTWwcCYfwIYzetJLfzp7B94oGMadqG7nB5AUJ7ICbMJ6mGPmXV/+eH42djdcVW18QBpexccUmDwI4cIoft1WXUC2scT3C9Ave5tOVQ6iu83b2f4tSXaWcaIntRmXAlrjHecBBwFuxNeeDgFdEZEp7y67SuRFkl0XaInIF0dGJLEtvf8Tz28Wxmc3mja8twviDhUBzUOmoLEjyarBEiMQtF3VImDU792e/wmjmMNeC/VMHVtzirCBuzuNpxtuPtQpck/XnfOawiWFkxU1bhMXBnXmJlWdSNbQ8xCvhKYRwNRcMCIf5rusFfHHXzWM3g67fEc2kuBu4MZrT5fxXiOCg5l0F2koeczZECMYHrkHDgMurWACcQ/S2KcQ+tNMdSPbktfdNaRm/Bg/p4S9Ceyv2RWr6OdEvfXt716F8UxkuV6gpSAQQCdHQMIyi3I/YJDZYkOsOUhw6iK1JzuGwDJG4JaLTHH+lwhqWMGbZloPzs55OyC1tvE584NrQMAyRxCp6U/kbr1ojidg1nAO8FPvOfX5cPJglYc7zuNjoDyYkmLow5BjDMcEAKyo24DY2NmAQJG68CePkIPfS5jW0wMvmbNyrYplgDlptIxhyuvjV5J8QcLopK9pEWFzEL6INi5O8k/qxuWooSvWQxcAoERkBbAbOB5qSM4wx1UBJ42MReQu4fo93FegCXRZpx9ZMPAZQ4Ozfxi6g+yavVYnd4n+jjZPsbctxbmm+5e5oIw/FmMTP54hxckDJ2uYDD4CjRV1sN0H+zg+4xzowpf48y4Wtqmw5TYSbaxdyS/5kBn5QA+TjG5Tah+APZ83lcHsdBtjMEHKoQwzMC57Nqfy/pnYr7fG4fLHr/qz59Xkn1XPVm99telwYqOP+3z4XfXBt9D0bDHc/dCK7a5u/KP3i2jco/STCJKK/3I73o38vNd93ct8D307a14CZA3S8bnd9cEG77Tp77VSvm6qO+pcuPZjckJbx6+tfd+n4FadsaDmhUOJ6A5fLzZNP11JcXMz551RSZXu5Yc5IKlfs5KYprc/hdFkJGfbP2pe2GrMsO8KzDT9gMm8kvU6jyspajjnK3bjzHACOrFyKPxjKCccuwwJGLRsIRBdNxxtw4S4c7zugofnFDonFncaQHUsojd7ISvyiHMLFU6FLOZU3m08oFpaYhGA24X1b4aYkzTW2A0dt4hjrcEVYM9VBnZW5yYAqsxljwiJyFdEtCB3AbGPMlyJyO7DEGLNHpbfTGbimJdJWidxWHQflPMkXLda4uq063ItWxm0jU89RoxbwwarmwOOosnn4qnbxef3FWNjYWByY/RT3B0/kXnkGS+zoRKQFIZeD+lBu0xrXrOKduGMzukE7F79djNeqTOiPYGOwyLU2g20I4CSEMxbENg/asm4zA2ne4ibU4CVQX0BWTjUuT+vtt0Zv3oqFjQAF1EDsbBN5H4tg099DtK5Xa+EGZ0KC3yPzH8Eqj/XoZ0Ag+mFz/vc/4SdnNt9lri9/B3dDBCF2K7AhggHqy7NbJQw2VsqZVh/mXKebK86J7nd/7emXJd3rtm7bIoA2Ew99m95Oem3fpuTJipGgo93zdVZH/Uubnktu0PGrGxQXV3L3vdMTkiXvvnd6QuJUkeXnpOzVcOhqVp77F2Y/11xe+bJz/8LBx33KL38xE8sRwY44GLP/V4TXOHC5I9GPyjBEItFxSKwQTk8IR0SartMyYevue6fzy1/MxOGwiUSspna2XYIxw6ms9LWZ2OWSCD4giIM8j42IwQqRuJuAgHEIvrCXEC5chHA5g4wZ9RVZ6/xNfw9r7xqKmUHCkgcDmDyBkMFDOCFJs7YiB09cxcPa0Tn8dcDcLvt/pfbEXiWX9gnGmAXAghbHftNG2+NTOWfaAtd0RdqqtdKsxRS7lycEj43i9xL0BQYjBLEw2Ai+qugsbOOca8J/jYkOsL+A0CNOIh6Ldb8tZfBVO9kqOVw/8XxKnlvF1sARrYJmSCySdW3Wz3gg8Cfq7CGczxye5UJyrc38Pq95yaCs20zuOpKerzRrceIbDrbMlGjsd4hJRTc10ruhoAAAIABJREFU/T38lDOZW/W3Vu1+7P1uQoLfhMrVze87FusaYEL56oR24ys3Jr3u+PKNrRIG76j5B18LbcUmmqiRtXEVAI88/mDShLSN1dH9hdpKPDy8ck3y45vXJH3Nl0G73fN1Vkf9S5seSm7Q8av7JEuWbMvBxy7FPd/fGJtx8HGfQuyuUeP49eqPv83JT77CyHAFDVdaeB6x2bi1kN+bIzne3Mjq8yYw/eK5TClbkjQxjKa7UM1frl+Zfyb19fcBQY45ypM0satiVhF8x83y5WM5h9m8GLyMY7PfIcsEkPjA1QVBl4tF4WM4X57kOS5mzKiv4NUg79Ye0fT3MO66Va2TwgQCBzvBKc3XjImveBj2OHp+fb5SaZLWYufpiLRVcm6rrtV603iNSVMGd9OX/8/rL0YgYT1qU3IWBmzAAa5rwmyfOIAi9278LzuZueVEwnOcbSaGRRO9mq/zie9yJnF5U5vJvIFlB5n0/9u7/+g4yzrv4+/vTGaapmnTkvJLKNLaVqn8KLRgURTELg9wFopncSmKUKmPsrvoCqLgg4hQXBXB7rMH9kBdkKKLIOhij1vERX6suBQplkLBB4gt2vKj0LRNmzbJZGau54+ZSWcm92TuJHPP3DP5vM7JIXP3mutH2l58e8/9vb7uKuK2b86l+muP/7FobaU25EjBz+G27Q94tlqx8wEW77fvAP89NNFG/6B2e4r+erSU+MzO67o5R4wUUbJ3SEmRyl4fiWiJOrnF13MlOb9EP4tpYtmuh4DwleSsB9q/qic/WbKUXCJXIrHv4dKvfnk5AH19+6595ar/y8vLf0l0ErSQhq/BIYkuJnwzQbK7m+ZDtzJxv52eiWFe/eWu5RLAenvhyiuW86GTniyYc+fuqZy06Rl6M2monO5+za/2nsbC+CP0mKPPwfgoNJnx270f5kx+DQ5O59c0b+rhyd3He/4cBp3g0GQlny1OxyOFz+WLNCD9CR8jcklT+TIftxcefJ1LziqQTVTy06eRJlLUp9c4EZL0pNsLrnnPcXA7vywb07m8r/zr+8bwTm4qvv5S9EDPdi96XDfcoL9ckez1kdhQYuwXiq7nSnJ+BMdr9HNU/5sc1f/mQH15kXqVS+TKF4mmiEYL96ZYU5KN7xTuYalUhAP3K/yHvVd/0Wh6UH9eY+QqVZXr7/wJ97Dt/e38TxMcZtBzQoxtR+xHNJJiNWcwgW5Wcwar+s/i9Y2FxwC+fccUehfEWTfJOPu4JnoXxOldEB/xCQ4ijSLQO64SHt5JXINDtkHJWQDOZapV+ejTERkUmnmNk6aJ8ZHCOwulEs2K200q8exq8fWOaDvHpTL5NJn0r33X800scSe1+Pqc1FbPdu/3uP6elPfdo1LXyzki9bbn9Tklrg8cyTPKo8dEwsIrkSudGvxnuz/ZxIz9C/ewaDTN1u2FJ9J49ZdKDb6X4zVGsj/GodO2lO2vJzmBp77ZzsfP3sZBB0fY+dN2ppy3mw+mngJgC4dm8gZS0H9ThB33Tdz35gqf4CDSKHTHdYzIJU1FSNDEXiIkOGrCSo6csDL73GsfRmIgOStpEdJRIx2BbbPbPJ+X8urzyAkrOWrCSsj2Sd44xe2KH20o1V880k0i3UpX8t0k0q2kStwhLb6ejkToI5pN4so8A9dHlHSkcC3eT8yWvu7Hxqj3XeI/lbjuV/Hd42Lfmrhw0CMBozl6rMmlWLbrIX6a7GSCS7Ns10Ms2/VQ9gB0kerJJU41N/fQOnEXzc093HjzZdx482XE4z2MG9dDPN7Dd2+6nFsPPJHeZIw9PTF6E1GW3/ORQeeZlu9vL/H4vmuRyF6i0S6am3sGJZDl91fc7sd3/xmzqUyadAKdne3E4v3EYgla6GEyXbTQQyyWIBYf/LgSZM6W7e6eR2fn6PYOkUahO65jiFcS10u7F+PYd2j/jv4ZrN7TzfyjX+XUSEfZh/xL9QmxgYcDdvTPYM7E+0omkJXrrzhh68zmA/h179cGvfeiyecVvP7WxIX8aPt9NOcd3thPfFAQ10Pc865rT96zvwAvRg7kmPTgciMbIoM/xs89HBEtuJY7Bmf4zp/8KX6y899xOD5gU/m96xy4nu/q3Y8MCirzjx4brtyjB2lSbEi9zbjsHalrd3tXPRMJklci17Vfv4FEonmgzbNr57P+3D/z4kNHM+Pl9Wzd3lryEH6//V237BpW/nAVfX3vzh6h5f3JydmLflHQbveurXzpC+fg3B38qaOfkxbE+f63LuXzz/6Q/Mfqo81p3rh9cGC66sFzeG7dzZhl3jtUVTGRsUJ3XMeYeKSbtqY/E4900508kM2Jj5K5F5n52pw4lb53ptAbi5GYGPOVmeqnz+7kgQXt/PaXn7CVpIU0ce7pvcnzff/a9R8Fr7+267FBH5JHgf+z67GCa+M9ErO8rh/udni2m+5x3ZnRT5ReonRbnF6i9BPF2cgC1+7oeM5q/ywHNR3Mn6Mxzmr/LGe1f5buqPf/kPcCXVjFHhNoAdpwNKM7rVJb7e2dHDN3Pe3tnXS8OpO7V15M/n5z911L6d3czs5EK6/8Zf+ylaP89Nfx6kxisW20tj5bNoksv93N32vGuTvIVPVqo7d3PDOu2Iwr/ndyv2P/z+8suJRLHkun9733yiuW686rjHkKXMewruR0z+u9mw+qeJ+lrpfjlbCVU+5j89zJBHsZz07a2JvN9k0X3Ul9Ieq93uLrpT7m97p+3cTTeCF2MC/EDuaCKZ8c+P66iaeVmG1l5Mb9H+IcGT1g1ONW+tEDkUp6bt2xntdP3LmHt4+L4qYfUvDVffJsWuZuz5wLO4z+Sl0fymubkqz+z4MGJ5RF0jhnpJshPTHzXy9eyV5eSWEiY40eFRjD2po2eV4/ZNfr3PLqKfx2/9mev/74C+/lfWt2DavPUtfL8UrYmsErbOYQMMclk8/ltp2ZY6+WTF5c0O7a1jO4fOf/wxEZKA1rpPl+6/uI5D0+kLaI58f6aSv8d50bxsf/SYsWfJRerY/Vc+P+vuuXFRm30o8eiFTS3GPXeV7/1Ad+xYcOgWUHnVVwfcpBXQMH9g+nv7nHruOB+4c3t1v+pZtY7DWgMGHrb5p+xuZ5hxCL9/PObZPZ/5LMndbi0wK8kr28ksJExhoFrmNYa9NWpsUfZXPi1IFr0+KPcsC6p+m+czZPHeedxfq+B3cVFDbw02drk3dGfjlelcFmTPgZi5s/PdAm/0zWfJFoD1dOOHfgvX/NLzIFDaKFBQ1yH+v3kwn8coFa8cf6uXZ9pOjHGJf9wGKkH/8HIXeOa1eyk89Ep1TsHNdeogU/G5EwmDmrgwuX3MHddy0duHbhkjuYOauDmcDC/7W89JuH2d9w9PY6HvyPXpZcHOHoYy4vqAx2w01XsmPRvtMDSp0W4KeqmMhYZG6EB6LXSlvT/u7EyR8v37BBFJdTDaK/7uSBdCWn09a0aSDA9Lo22j4rPe9KvTcX7EHmo/Grdz8CDA72mtMJ7tp5L0mX4EORqTztMnedl0xeTG8kPqhfPwYCzf63+Ux0Cj+PxDzH9ttuX8WuwuD6hdjBI7pD6vdnE5RfbVsBgJk965ybH/iAATv66JhbtXpq+YYhtzh7RNO99w/9vGVxOdVKjOPVZ8erM3lu3bHMPXbdQJDpdc3vHL3eW3bNCccBS3ewfl0/5zc5bt8OH1gQY+eP96Nz99QR/xxG+zOU2jn80DeB8O1fLQdMc7PPu3zU/ay/5fKarEt3XEPMV/nTCvTX2rS1ILh8affibIJVxrT4o8yZeN+o+hytcpXBRvNevx/rX939G5pdkjSO36e3DQSFV3f/ZsQfm/vN2h9udn/mDFfHaM9xrdUjD1L/vMqpjjYjvlSfM2d1FASn1379hmySVcaFS+7gumXXjLg/Pw5YuoPmNQnm9sFz2SpZsXX9xJfugB/ZiINOP1XFRMYSJWeFlFc2/YY9F5FIt5Z/8yj6G+pUgKDnWC+CyLD322e5dkqmkjDIL6e6e/ekimTE++1zqJMBgp4jwHgHk4FxeqpGJBAKXEOq0uVP/fY3nFMBKj3HsAsiKPTbp992QyVTiVRLEBnxfvv0ezJApef4zm2TSUeLnnePGe/cPnlE/YmINwWuIeW3/Gml+xvOqQCVnmPYBREU+u1zuGPnnx8rUm1BZMT77XOokwGCnOP+l+wk1VuUM+JxPquIjI4C15AaqvypX/llUv2WU82dCpB/SmqpUwEqMcd6FERQ6LfPcu1qdX6sSD6vcqojyYjPL3c6VJ+dne2sf+4YOjvbB04GyN/DvE4GqNQcc3r2OlIp6IsOfT6riIyOkrNCzKv8qV+lkqbKlVM9csJKpsQ28nriwwN9TYltDGSO9ea6iaeVzLAPuk+/7ZRMJWHhVU51OEqVOy3u0yvBat68Z7nvJxdg5nDOmDd/bSBzzPcPh0b4zDPwgRNivPXDKSXPZxWR0dFxWA0okW7liR3fKagQFSHByVOuKggsvdoZCQzKvlekGnQcVjj5PQ5rpDo72zlpwTP09u4r19rc3MOTa44vCC692o0blyku0tc39HuHa6g1v7YpycKPbmPJxS18/RuTRjyGNJawHofVOmWam3vqP466n9/9/Cs1WZceFWhAfpOmvNuls/Whhn6viEhQ/CZOebWLRFNEo0XPgwdcKjVTJQs+f8mEwMYQkQw9KtCA/CZNebeLDCpg2sgJVyISPn4Tp7zapVODn/8OslTqa5uS2SpZLex/gJIhRYKmO64hkp8kNRr5SVNReksmYnklVx01YWVVE64qtWYRqa38BKnRyiVOmfUQiXQzbpx3IpZXgtWNN1/GjTdXLulqKJ2d7Vz/zffS1DRVd1tFqkR3XEOi0lWyIJNPa9n/DjWGV3JVNRKugliziFRfEFWycPm719DjeCVYVSrpqpRVD57DV6+4mb6+BNFonKeeunz0axaRshS4hkB+BapcUtSGPRfRHv/jiILGXH+O+EB9pcxrcCXGKB4nHukm9p42MnWa2nyPbZteH9YcK7VmEamN/ApUuSSpK69YzodOenLEAWOuT+fG4xz09cFXv7wcyCRdeY1TPFaQpVJz88skgLWQSo1+zSLijwLXEMglSRVm8mcSokYSxHn1Z6QxKCgUOtQYb51/BDvm9g+6Xs64t45g+oO7ygawlV6ziNRGLkEqP7M/lww10iDOq89oNE3xHdhy4zyyd6bn9VIWtnSUb1RifqNds4j4o8A1BKpRJcsRofjgs1JjvHX+ERzz6Q1c967Vwx77kb0zWXbQWbzvtkOGDF7HWtUtkUZVrSpZqdTglIyhxrn2jTN56r+OHNa4t8zdzoPH/NuI5hdkApiI7KPAtQoS6dYhnxfNJUkVP+850juP+f3lHDlhJYCvMfYeBB+e/MqIxl7Y0sEtB+1mz2FttHpXjx00x0qsWUSC0dnZPuSzorkEqSuvWE5TrJ9k9tnT0dx5zPX5pS8sBxzxeIQbb74MwNc4175xJut/dCQzfvJHIFMeuVQBj6TtOwmg++TZnHPxZ8sGr0GsWUT8UeAaML8JSJWuQLWj/z2kieW9nsGcifeFqsrVWKq6JVKP/CZdVbICVc6zzxyPc5m6qX198Oza+Vy37Bpf46x/5120vrHvwahrd/+ao/ozh8H/eMc9NLnUwPWRVpcLYs0iUp4C1wANNwHJK0lqJLqTB7I58VHIO5F1c+JUDks+TmvT1lAFiJVas4hUllfS1WVf/D4rf7iKV1/JFC7JVZPKvgMY2Sc1xfbunc0Lz19M/h52911LWfeHf6al5ZWy43R03030rSaiXZkqWl3JTtKkaAHIBq29jP7M1SATwETEm85xDZDfClaV1pWcPqzrIiLFvKpSmfXT1/fuwMfe033CsK6X85noFPqLSqskLcoNExeOqD8RqR3dcQ1QrRKQ2pq8Hy4tdV1EpJhXAlIsFmflj3fzD5dk9rV77w/mH+Edr77KX506+Prt//YqM2eVH/Oc9RfSemcbrU9k7swu2/UQ41IR8s9VaXIpvr77kRE/KiAitaE7rgHyqkzlVcGq0lqbtjIt/ihkT24Fx7T4o7Q2ba34WACRRJr47n4iifSw36vKWSLh5FWVKpeA1N8/le7ueRWpkuVl5qwOLlxyB/l72IVL7mDmLH/HVZXSS5Ruixc8JtDW2sPsw96hrbVn2P1VslqYiPijO64B80pAqkbFqCmxjWxOfJgIjjTGlNjGivaf0/J2D1Nf6QIzcI5ts/0XK1DlLJFw80pAWvXgOTy37mbM+jlpQbwyVbI8zJv3LHff9UnMIBYz5s1fO+K+rpt4muepAo995D2svOAnJFMRmqJpvr0uzS+Y4avPQKqFiUhZuuNaBfFIN21Nfx6405pL2ErSQpo4G/ZcVNE7jrkxIE6acRDAGJC50zr1lS4iaYikHJE0TH2liynpPb7nGOTPQURGr729k2Pmrqe9vXMgYSudbiGVaqO3dzxXXrG84nccc+NAC861kEiMbpykRblm0hlcM+kMei3GNZPO4KZ3ncIXL3iS5niK1vH9NMdTfG3e/b72r/zEtd27JwX2cxCRwRS4Vlk1EraqlRTW1JfK3GnNZ8a70l1l31urxDURGTmvhK1cxah6G+fA/bpJFhU1SLqIr/2rWj8HERlMgWuVVSNhq1pJYclxUXBF9bic441I+ccFVDlLpP5Uq2JUNcbZur2Vpmjhc/lNlva1f6lylog/Zna6mb1sZh1mdpXHr19uZi+Z2fNm9hszK3tsiQLXKhsqYauexgBIxyNsm93G1u6pPP3a8Wztnsq22W3siEzwbJ+fiFWtOYpI5QyVsBWmcS6d9ThvHxel++TZJb9en3cM3153Hpu3H8wTL3+QzdsP5qrt5/Gp93o/Z5+fkFatn4NIPTOzKHArcAYwBzjfzOYUNVsHzHfOHQ08ANxYrl8lZ9VANSpGjWaM6Q/uYtlBZ/Hbo14u23bjwyew5ltLiDYlSSWbOPHrd8HWvbQ+8ceCdqUSsVQ5S6S+VKti1GjGWdjSAZ/4ObfMPWXIdnc9vogbvvzDgf3r4m//EwtbHhnUrlRCmipniQzpBKDDObcRwMzuBRYBL+UaOOcey2u/BrigXKfmij/qDbm2pv3diZM/XutpNDw3/RC2Lpg0ZJtkz3heWrkUl9z3kZk19XPKxCsLgtBEupUndnxnoHoYQIQEJ0+5SsGqDOlX21YAYGbPOufm13g6o3b00TG3avXUWk9DyCRYnbTgmYGqYADNzT08ueb4giDUbzuRYocfmikzHLb9q3XKNDf31H8cdT+/+/lXhlyXmZ0LnO6c+2z29aeBDzjnLi3R/hbgLefcDUONqzuu4sk2vc5Bm14fsk1X8t1Ek/0k2Re4RpP99KTbCwLSXCJWYeCaHNRORKRacglW+QFpLsEqPyD1206kXkQTKSb8pfzpGT5MNbP8c+pWOOdW5L224jeQOZh5EDO7AJgPnFxuUAWuMmJ+E6yUiCUiYeM3wUqJWCIlbStzJ3kLMC3v9aHAG8WNzGwhcDVwsnOur9ygSs6SEfObYKVELBEJG78JVkrEEhmxZ4BZZjbdzOLAYmBVfgMzOxa4HTjbOfe2n051x1VGxW+ClRKxRCRs/CZYKRFLZPicc0kzuxR4GIgCdzrnXjSz64G1zrlVwPeAVuB+y5wL/xfn3NlD9avAVUYtHun2FYj6bSciUi3t7Z2+AlG/7URkH+fcamB10bVv5H2/cLh96lEBEREREakLgQauQVRMEBGpBu1fIiLhE1jgGlTFhEaRX0VKRMJF+9fQOjvbWf/cMXR2ttd6KiIyxgR5x3WgYoJzLgHkKiYMcM495pzbm325hsxRCQ3vzd7jeWLHd1jbdRlP7PgOb/YeX+spiUgh7V8lrHrwHE5a8Ayf/uRPOWnBM6z6xaLybxIRqZAgA9dDgM15r7dkr5WyFHgowPmEQiLdyoY9F5EmTpIW0sTZsOci3XkVCRftXx46O9u58ivfp7d3PLt3T6K3dzxXXrFcd15FpGqCDFxHUjHheyV+/XNmttbM1iZcbwWnWH25KlL5clWkRCQ0Atm/OrenKzjF6stVkcqXqyIlIlINQQauw62YcHapignOuRXOufnOuflxaw5kstWiKlIidSGQ/at9v/o+yEVVpESk1oLcRQOpmFDvVEVKpC5o//KgKlIiUmuBFSAIqmJCI1AVKZFw0/5VmqpIiUgtBVo5K4iKCY1CVaREwk37V2mqIiUitVLfD1yJiIiIyJihwFVERERE6oICVxERERGpCwpcRURERKQuKHAVERERkbqgwFVERERE6oICVxERERGpC4Ge4yoiIiIiIdLXj216vdazGDHdcRURERGRuqDAVURERETqggJXEREREakLClxFREREpC4ocBURERGRuqDAVURERETqggJXEREREakLClxFREREpC4ocBURERGRuqDAVURERETqggJXEREREakLClxFREREpC4ocBURERGRuqDAVURERETqggJXEREREakLClxFREREpC4ocBURERGRijOz083sZTPrMLOrPH59nJndl/31p83s8HJ9KnAVERERkYoysyhwK3AGMAc438zmFDVbCuxwzs0ElgPfLdevAlcRERERqbQTgA7n3EbnXAK4F1hU1GYRsDL7/QPAx8zMhupUgauIiIiIVNohwOa811uy1zzbOOeSQBfQPlSnTRWcoIiIiIiE2K7Utocf7vzB1Ap01Wxma/Ner3DOrch77XXn1BW99tOmgAJXERERkTHCOXd6lYbaAkzLe30o8EaJNlvMrAloA7YP1akeFRARERGRSnsGmGVm080sDiwGVhW1WQVclP3+XOBR55zuuIqIiIhI9TjnkmZ2KfAwEAXudM69aGbXA2udc6uAO4AfmVkHmTuti8v1q8BVRERERCrOObcaWF107Rt53/cCnxhOn3pUQERERETqggJXEREREakLClxFREREpC4ocBURERGRuqDAVURERETqggJXEREREakLClxFREREpC4ocBURERGRuqDAVURERETqQqCBq5mdbmYvm1mHmV3l8evjzOy+7K8/bWaHBzkfERG/tH+JiIRPYIGrmUWBW4EzgDnA+WY2p6jZUmCHc24msBz4blDzERHxS/uXiEg4BXnH9QSgwzm30TmXAO4FFhW1WQSszH7/APAxM7MA5yQi4of2LxGREAoycD0E2Jz3ekv2mmcb51wS6ALaA5yTiIgf2r9EREKoKcC+ve48uBG0wcw+B3wu+7Lv4c4fbBjl3MJiKrCt1pOokEZZS6OsAxpgLWY/yH373moP7XGtIvvX9Glvaf8KH60lfBpgHQNbRLX3r4YWZOC6BZiW9/pQ4I0SbbaYWRPQBmwv7sg5twJYAWBma51z8wOZcZVpLeHTKOuAxltLlYfU/lWG1hJOjbKWRlkH1GT/amhBPirwDDDLzKabWRxYDKwqarMKuCj7/bnAo865QXcsRESqTPuXiEgIBXbH1TmXNLNLgYeBKHCnc+5FM7seWOucWwXcAfzIzDrI3KlYHNR8RET80v4lIhJOQT4qgHNuNbC66No38r7vBT4xzG5XVGBqYaG1hE+jrAO0llHR/lWW1hJOjbKWRlkHNNZaas70yZaIiIiI1AOVfBURERGRuhDawLVRyi36WMflZvaSmT1vZr8xs3fXYp5+lFtLXrtzzcyZWWgzQv2sxcz+Nvt786KZ3VPtOfrl48/YYWb2mJmty/45O7MW8yzHzO40s7fNzPO4KMv4l+w6nzez46o9R78aZf8C7WHVnJ9f2r/Cp5H2r9BzzoXui0wyxJ+AGUAcWA/MKWrz98Bt2e8XA/fVet4jXMdHgZbs938XxnX4XUu23UTgv4E1wPxaz3sUvy+zgHXAlOzrA2o971GsZQXwd9nv5wCv1XreJdbyEeA4YEOJXz8TeIjM4YgLgKdrPedR/J6Efv8axlq0h4VsHdq/arKWhti/6uErrHdcG6XcYtl1OOcec87tzb5cQ+a8yDDy83sCsAy4Eeit5uSGyc9a/jdwq3NuB4Bz7u0qz9EvP2txwKTs920MPo80FJxz/43HOah5FgF3u4w1wGQzO7g6sxuWRtm/QHtYGGn/CqEG2r9CL6yBa6OUW/SzjnxLyfyLLIzKrsXMjgWmOed+Wc2JjYCf35fZwGwz+52ZrTGz06s2u+Hxs5ZvAheY2RYyWfJfqM7UKm64f59qpVH2L9AeFkbav+pTvexfoRfocVijULFyizXme45mdgEwHzg50BmN3JBrMbMIsBxYUq0JjYKf35cmMh+3nULmDtJvzexI59zOgOc2XH7Wcj5wl3PuZjM7kczZo0c659LBT6+i6uHvPDTO/gXaw8JI+5f2rzEtrHdch1NuERui3GKN+VkHZrYQuBo42znXV6W5DVe5tUwEjgQeN7PXyDzDsyqkyQ1+/3z9wjnX75zbBLxM5n8EYeNnLUuBnwI4554CmsnUAa83vv4+hUCj7F+gPSyMe5j2L+1fY1pYA9dGKbdYdh3Zj6ZuJ7Phh/U5JCizFudcl3NuqnPucOfc4WSedTvbORfGGs1+/nw9SCbpBDObSuajt41VnaU/ftbyF+BjAGZ2BJmN/52qzrIyVgEXZrNzFwBdzrk3az0pD42yf4H2sDDuYdq/tH+NbbXODiv1RSYD7xUyGYdXZ69dT2Yjgcwf3vuBDuD3wIxaz3mE63gE2Ao8l/1aVes5j3QtRW0fJ4QZucP4fTHg+8BLwAvA4lrPeRRrmQP8jkzG7nPAabWec4l1/AR4E+gnc3diKXAJcEne78mt2XW+UOd/vupi//K5Fu1hIVuH9q+arKNh9q+wf6lyloiIiIjUhbA+KiAiIiIiUkCBq4iIiIjUBQWuIiIiIlIXFLiKiIiISF1Q4CoiIiIidUGBq1ScmX3RzP5oZv8+gvcebmafDGJe2f4/YmZ/MLOkmZ0b1DgiUp+0f4nHzhEtAAACSUlEQVSEmwJXCcLfA2c65z41gvceDgx74zezqM+mfyFT0vGe4Y4hImOC9i+REFPgKhVlZrcBM8iUSrzMzCaY2Z1m9oyZrTOzRdl2h5vZb7N3D/5gZh/MdvEd4MNm9lz2/UvM7Ja8/n9pZqdkv+82s+vN7GngRDObZ2ZPmNmzZvawmR1cPD/n3GvOueeBeqtzLSIB0/4lEn5NtZ6ANBbn3CVmdjrwUefcNjP7JzLlLC82s8nA783sEeBt4K+cc71mNotM1ZH5wFXAFc65vwYwsyVDDDcB2OCc+4aZxYAngEXOuXfM7DzgW8DFQa1VRBqL9i+R8FPgKkE7DTjbzK7Ivm4GDgPeAG4xs7lAikwt7eFKAT/Lfv9e4Ejgv8wMIEqm/J6IyEhp/xIJGQWuEjQD/sY593LBRbNvkqlvfgyZR1Z6S7w/SeEjLc153/c651J547zonDuxEpMWEUH7l0jo6BlXCdrDwBcsexvBzI7NXm8D3nTOpYFPk7nDALAbmJj3/teAuWYWMbNpwAklxnkZ2N/MTsyOEzOz91d0JSIy1mj/EgkZBa4StGVADHjezDZkXwP8K3CRma0h8zHbnuz154Gkma03s8uA3wGbgBeAm4A/eA3inEsA5wLfNbP1wHPAB4vbmdnxZrYF+ARwu5m9WJllikgD0v4lEjLmnKv1HEREREREytIdVxERERGpCwpcRURERKQuKHAVERERkbqgwFVERERE6oICVxERERGpCwpcRURERKQuKHAVERERkbqgwFVERERE6sL/B7k76F7tGZ00AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 720x360 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_classes = 2\n",
    "x_train, y_train = get_data(num_classes=num_classes)\n",
    "x_train_adv, model = get_adversarial_examples(x_train, y_train)\n",
    "plot_results(model, x_train, y_train, x_train_adv, num_classes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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66Y55252zi1xzi2JWUtNOltrk0O9pPI+70gRYXJIk1sRn9WkNnU28CW8Zs7qYWgoOmJbYijKzFk9deqRyISluVMOzZ1EpBnVcsY4fN00M4uRvm7aiFj2nOumLfd63bRGFQv1sXDKBkLEiXCIEHEWTtmgT3BF/KfalKezs5cbvnkVLS39tLW/RUtLPzd88yod/Rbxn+pTDs2dRKQZ1ewUdOdcwsyy100LA7dmr5sGPJmJbs+9bhrAy16i2xvV9JYn6Ixtpz/VyeRQr95AROpAtamw5Svu5/1nPEzPrpnMnNWjxbdIHag+jaa5k4g0m1p+Bxzn3EZgY962L+XcP6eWrx9EsVCf3jxE6ky1qbDOzl4tvEXqTPVpNM2dRKSZNO6XFkVEREREREQaiBbgIiIiIiIiIj7QAlxERERERETEB1qAi4iIiIiIiPhAC3ARERERERERH2gBLiIiIiIiIuIDLcBFREREREREfKAFuIiIiIiIiIgPtAAXERERERER8UGk3h0QERERERERYXAIe+GVeveipnQEXERERERERMQHWoCLiIiIiIiI+EALcBEREREREREfaAEuIiIiIiIi4gMtwEVERERERER8oAW4iIiIiIiIiA+0ABcRERERERHxgRbgIiIiIiIiIj7QAlxERERERETEB1qAi4iIiIiIiPhAC3ARERERERERH2gBLiIiIiIiIuIDLcBFREREREREfKAFuIiIiIiIiIgPtAAXERERERER8YEW4CIiIiIiIiI+0AJcREREREREJI+ZLTOzHWbWbWbXFPj5JDO7K/Pzx8xsdrk2tQAXERERERERyWFmYeA7wHnAAmCVmS3I220NsN85Nw9YD9xQrl0twEVEREREdzMooQAACpxJREFURERGOg3ods7tdM7FgR8BK/L2WQFsyNy/GzjbzKxUo1qAi4iIiIiIiIx0PLAr53FPZlvBfZxzCeAA0Fmq0UgVOygiIiIiIiJSkbeSezdt6v3naT69XIuZPZnz+Gbn3M05jwsdyXZ5j73sM4IW4CIiIiIiIlJ3zrll9e5Djh5gVs7jmcDuIvv0mFkE6AD2lWpUp6CLiIiIiIiIjPQEMN/M5phZDFgJdOXt0wWszty/EHjQOacj4CIiIiIiIiJeOecSZvZZYBMQBm51zj1jZl8GnnTOdQG3AD8ws27SR75XlmtXC3ARERERERGRPM65jcDGvG1fyrk/AHxyLG3qFHQRERERERERH2gBLiIiIiIiIuIDLcBFREREREREfKAFuIiIiIiIiIgPtAAXERERERER8UFNF+BmtszMdphZt5ldU+Dnk8zsrszPHzOz2bXsj4gIqDaJSHCpPomINLeaLcDNLAx8BzgPWACsMrMFebutAfY75+YB64EbatUfERFQbRKR4FJ9EhFpfrU8An4a0O2c2+mciwM/Albk7bMC2JC5fzdwtplZDfskIqLaJCJBpfokItLkarkAPx7YlfO4J7Ot4D7OuQRwAOisYZ9ERFSbRCSoVJ9ERJpcpIZtF/o01lWwD2Z2BXBF5uHgpt5/3jbOvtXbNGBvvTtRBc0wDo2hjsz+OXv3nX6+bIFtValNc2a91ui1CRr47ymHxhAMDT6G4TLQFPVJc6dAaIYxQHOMo2HHUKe5k1RRLRfgPcCsnMczgd1F9ukxswjQAezLb8g5dzNwM4CZPemcW1KTHvukGcYAzTEOjSEYzOxJH19OtamEZhiHxhAMzTAGUH0KCo0hOJphHM0yhnr3QSpTy1PQnwDmm9kcM4sBK4GuvH26gNWZ+xcCDzrnRn2KKyJSRapNIhJUqk8iIk2uZkfAnXMJM/sssAkIA7c6554xsy8DTzrnuoBbgB+YWTfpT29X1qo/IiKg2iQiwaX6JCLS/Gp5CjrOuY3AxrxtX8q5PwB8cozN3lyFrtVbM4wBmmMcGkMw+DoG1aaSmmEcGkMwNMMYQPUpKDSG4GiGcWgMUjems5ZEREREREREaq+W3wEXERERERERkYzALsDNbJmZ7TCzbjO7psDPJ5nZXZmfP2Zms/3vZWkexvB5M3vWzH5rZj8zsxPr0c9Syo0hZ78LzcyZWeASJb2Mwcw+lfldPGNmP/S7j154+Hs6wcx+bmabM39T59ejn8WY2a1m9rqZFbwUjqX9U2Z8vzWzd/vdRy9Um4JD9SkYGr02gepTkDRDfVJtCo5Gr0/NUpskj3MucDfSwSO/A+YCMWArsCBvnz8DbsrcXwncVe9+VzCGDwGtmft/2ohjyOzXDjwEPAosqXe/K/g9zAc2A0dmHh9T735XOI6bgT/N3F8AvFjvfuf17wPAu4FtRX5+PvAT0te4PR14rN59rvD3oNoUkHFk9lN9qv8YAl2bMv1SfQrArRnqk2pTcG7NUJ+aoTbpNvoW1CPgpwHdzrmdzrk48CNgRd4+K4ANmft3A2ebmfnYx3LKjsE593Pn3KHMw0dJX+8zSLz8HgCuB74BDPjZOY+8jOFPgO845/YDOOde97mPXngZhwOmZu53MPrasXXlnHuIAteqzbECuN2lPQocYWbT/emdZ6pNwaH6FAwNX5tA9cnHPpbTDPVJtSk4Gr4+NUltkjxBXYAfD+zKedyT2VZwH+dcAjgAdPrSO2+8jCHXGtKfYAVJ2TGY2WJglnPuAT87NgZefg8nASeZ2a/N7FEzW+Zb77zzMo6/BS4xsx7SCbp/7k/Xqmas/2bqQbUpOFSfgmEi1CZQffJLM9Qn1abgmAj1qRFqk+Sp6WXIxqHQp7H5ce1e9qknz/0zs0uAJcBZNe3R2JUcg5mFgPXA5X51qAJefg8R0qdSfZD0J+m/MrOFzrk3a9y3sfAyjlXAbc65G83svaSvE7vQOZeqffeqIuj/pkG1KUhUn4JhItQmCP6/a1B9CgrVpuCYCPUp6P+mpYCgHgHvAWblPJ7J6FNChvcxswjp00ZKnaLhNy9jwMzOAb4ILHfODfrUN6/KjaEdWAj8wsxeJP3dk66AhYl4/Vu63zk35Jx7AdhB+k0lSLyMYw3wLwDOuf8AWoBpvvSuOjz9m6kz1abgUH0KholQm0D1yS/NUJ9Um4JjItSnRqhNkieoC/AngPlmNsfMYqSDQrry9ukCVmfuXwg86JwL0ic+ZceQOQXpu6TfQIL43ZmSY3DOHXDOTXPOzXbOzSb9Xazlzrkn69Pdgrz8Ld1HOtQFM5tG+rSqnb72sjwv43gZOBvAzN5F+k3kDV97OT5dwGWZRM/TgQPOuVfr3ak8qk3BofoUDBOhNoHqk1+aoT6pNgXHRKhPjVCbJN9YEtv8vJFO9XuOdHrhFzPbvky6SEH6H8iPgW7gcWBuvftcwRh+CuwBtmRuXfXu81jHkLfvLwhYkqfH34MB/wA8CzwNrKx3nyscxwLg16RTPrcA59a7z3n9vxN4FRgi/YntGuBK4Mqc38N3MuN7Ooh/Sx5/D6pNARlH3r6qT/UbQ6BrU6aPqk8BuTVDfVJtCs6t0etTs9Qm3UbeLPPLExEREREREZEaCuop6CIiIiIiIiJNRQtwERERERERER9oAS4iIiIiIiLiAy3ARURERERERHygBbiIiIiIiIiID7QAl3Ezs78ws+1m9r8reO5sM7u4Fv3KtP8BM/uNmSXM7MJavY6IBJPqk4gEkWqTyMSlBbhUw58B5zvn/ksFz50NjPlNxMzCHnd9Gbgc+OFYX0NEmoLqk4gEkWqTyASlBbiMi5ndBMwFuszsKjObYma3mtkTZrbZzFZk9pttZr/KfKL6GzN7X6aJrwNnmtmWzPMvN7Nv57T/gJl9MHO/z8y+bGaPAe81s1PN7Jdm9pSZbTKz6fn9c8696Jz7LZCq8f8KEQkY1ScRCSLVJpGJLVLvDkhjc85daWbLgA855/aa2deAB51znzazI4DHzeynwOvAR5xzA2Y2H7gTWAJcA1ztnPsogJldXuLlpgDbnHNfMrMo8EtghXPuDTO7CPgq8OlajVVEGovqk4gEkWqTyMSmBbhU27nAcjO7OvO4BTgB2A1828wWAUngpAraTgL3ZO6/E1gI/D8zAwgDr46j3yLS/FSfRCSIVJtEJhAtwKXaDPiEc27HiI1mfwvsAU4h/dWHgSLPTzDyqxEtOfcHnHPJnNd5xjn33mp0WkQmBNUnEQki1SaRCUTfAZdq2wT8uWU+WjWzxZntHcCrzrkUcCnpT10B3gbac57/IrDIzEJmNgs4rcjr7ACONrP3Zl4nama/X9WRiEizUX0SkSBSbRKZQLQAl2q7HogCvzWzbZnHAP8LWG1mj5I+hepgZvtvgYSZbTWzq4BfAy8ATwPfBH5T6EWcc3HgQuAGM9sKbAHel7+fmS01sx7gk8B3zeyZ6gxTRBqQ6pOIBJFqk8gEYs65evdBREREREREpOnpCLiIiIiIiIiID7QAFxEREREREfGBFuAiIiIiIiIiPtACXERERERERMQHWoCLiIiIiIiI+EALcBEREREREREfaAEuIiIiIiIi4gMtwEVERERERER88P8BtBpmMCaTousAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1080x360 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_classes = 3\n",
    "x_train, y_train = get_data(num_classes=num_classes)\n",
    "x_train_adv, model = get_adversarial_examples(x_train, y_train)\n",
    "plot_results(model, x_train, y_train, x_train_adv, num_classes)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 3 Example: MNIST"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.1 Load and transform MNIST dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "(x_train, y_train), (x_test, y_test), min_, max_ = load_mnist()\n",
    "\n",
    "n_samples_train = x_train.shape[0]\n",
    "n_features_train = x_train.shape[1] * x_train.shape[2] * x_train.shape[3]\n",
    "n_samples_test = x_test.shape[0]\n",
    "n_features_test = x_test.shape[1] * x_test.shape[2] * x_test.shape[3]\n",
    "\n",
    "x_train = x_train.reshape(n_samples_train, n_features_train)\n",
    "x_test = x_test.reshape(n_samples_test, n_features_test)\n",
    "\n",
    "y_train = np.argmax(y_train, axis=1)\n",
    "y_test = np.argmax(y_test, axis=1)\n",
    "\n",
    "n_samples_max = 200\n",
    "x_train = x_train[0:n_samples_max]\n",
    "y_train = y_train[0:n_samples_max]\n",
    "x_test = x_test[0:n_samples_max]\n",
    "y_test = y_test[0:n_samples_max]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.2 Train DecisionTreeClassifier classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None, min_samples_split=2, \n",
    "                               min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, \n",
    "                               random_state=None, max_leaf_nodes=50, min_impurity_decrease=0.0, \n",
    "                               min_impurity_split=None, class_weight=None, presort=False) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n",
       "            max_features=None, max_leaf_nodes=50,\n",
       "            min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "            min_samples_leaf=1, min_samples_split=2,\n",
       "            min_weight_fraction_leaf=0.0, presort=False, random_state=None,\n",
       "            splitter='best')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(X=x_train, y=y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.3 Create and apply Zeroth Order Optimization Attack with ART"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "art_classifier = SklearnClassifier(model=model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "zoo = ZooAttack(classifier=art_classifier, confidence=0.0, targeted=False, learning_rate=1e-1, max_iter=100,\n",
    "                binary_search_steps=20, initial_const=1e-3, abort_early=True, use_resize=False, \n",
    "                use_importance=False, nb_parallel=10, batch_size=1, variable_h=0.25)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "x_train_adv = zoo.generate(x_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_test_adv = zoo.generate(x_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.4 Evaluate DecisionTreeClassifier on benign and adversarial samples"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Benign Training Score: 1.0000\n"
     ]
    }
   ],
   "source": [
    "score = model.score(x_train, y_train)\n",
    "print(\"Benign Training Score: %.4f\" % score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.matshow(x_train[0, :].reshape((28, 28)))\n",
    "plt.clim(0, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Benign Training Predicted Label: 5\n"
     ]
    }
   ],
   "source": [
    "prediction = model.predict(x_train[0:1, :])[0]\n",
    "print(\"Benign Training Predicted Label: %i\" % prediction)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Adversarial Training Score: 0.1400\n"
     ]
    }
   ],
   "source": [
    "score = model.score(x_train_adv, y_train)\n",
    "print(\"Adversarial Training Score: %.4f\" % score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.matshow(x_train_adv[0, :].reshape((28, 28)))\n",
    "plt.clim(0, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Adversarial Training Predicted Label: 8\n"
     ]
    }
   ],
   "source": [
    "prediction = model.predict(x_train_adv[0:1, :])[0]\n",
    "print(\"Adversarial Training Predicted Label: %i\" % prediction)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Benign Test Score: 0.4750\n"
     ]
    }
   ],
   "source": [
    "score = model.score(x_test, y_test)\n",
    "print(\"Benign Test Score: %.4f\" % score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.matshow(x_test[0, :].reshape((28, 28)))\n",
    "plt.clim(0, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Benign Test Predicted Label: 7\n"
     ]
    }
   ],
   "source": [
    "prediction = model.predict(x_test[0:1, :])[0]\n",
    "print(\"Benign Test Predicted Label: %i\" % prediction)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Adversarial Test Score: 0.1350\n"
     ]
    }
   ],
   "source": [
    "score = model.score(x_test_adv, y_test)\n",
    "print(\"Adversarial Test Score: %.4f\" % score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.matshow(x_test_adv[0, :].reshape((28, 28)))\n",
    "plt.clim(0, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Adversarial Test Predicted Label: 6\n"
     ]
    }
   ],
   "source": [
    "prediction = model.predict(x_test_adv[0:1, :])[0]\n",
    "print(\"Adversarial Test Predicted Label: %i\" % prediction)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
